iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
0
DevOps

誤入 DevOps 叢林的後端工程師系列 第 5

Day05 - 擁抱容器化

  • 分享至 

  • xImage
  •  

在 Docker 還沒誕生前,基本上我們都是用 bash script 來管理我們的作業系統環境,所以對系統工程師而言,怎麼寫 bash script 程式非常重要的。

install-node.sh 檔

#!/bin/bash
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source ~/.bashrc

nvm install 10.16.0
npm i yarn -g

start-api-server.sh

#!/bin/bash
cd /app/
yarn install
cd /app/packages/api-server
npm start

執行

sh install-node.sh
sh start-api-server.sh

到了 Docker 時代的來臨,你可以輕鬆的至 Docker Hub 挑選一個最接近你需求的 Image,然後過 FROM 語法繼承那個預設環境,再疊加上自己專案所需的邏輯,就可以快速的建立程式的執行環境了。

Dockerfile 檔

FROM node:10.16.0-slim AS builder

ENV NODE_ENV=production

WORKDIR /app

COPY . .
RUN npm i yarn -g
RUN yarn install

WORKDIR /app/packages/api-server
EXPOSE 3000
CMD npm start

然後再透過 build 指令,產生自己的 image 版本,直接用 run 指令跑起來就可以了。

docker build -f Dockerfile -t api-server:dev-20190912 $PWD
docker run -d -p 80:3000 api-server:dev-20190912

術業有專精,並不是每個人都這麼了解作業系統的底層細節,俗話說「不要重複造輪子」,直接站在別人的肩膀上吧。


上一篇
Day04 - 環境總是搞砸了一切?
下一篇
Day06 - Immutable
系列文
誤入 DevOps 叢林的後端工程師30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
icekimo
iT邦新手 3 級 ‧ 2019-09-12 22:54:38

一般是用shellscript來泛指這些指令稿,開頭第一行是:或#!
shellscript在跨平臺其實很痛苦,比如BSD/AIX用csh執行的移到linux最愛的bash就是會不一樣。所以通用的會取最小集合用/bin/sh撰寫。
Dockerfile RUN 內定也是/bin/sh,你也可以說它變成一種更制式的撰寫規則,便於管理和流通。

alincode iT邦新手 1 級 ‧ 2019-09-12 23:54:07 檢舉

謝謝,我調一下排版。

我要留言

立即登入留言